package com.ysh.xiaomi.dao.impl;

import com.ysh.xiaomi.dao.GoodTypeDao;
import com.ysh.xiaomi.pojo.TbGoodsType;
import com.ysh.xiaomi.utils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Queue;

/**
 * 袁胜虎 on 2022/8/17 11:32
 */
public class GoodTypeDaoImpl implements GoodTypeDao {
    @Override
    public List<TbGoodsType> findAllFirstLevelType() {
        QueryRunner qr = new QueryRunner();
        //查询所有1级正常的分类
        String sql = "select * from tb_goods_type where level = 1 and status = 1";
        try {
            List<TbGoodsType> goodsTypeList = qr.query(DbUtils.getConn(), sql, new BeanListHandler<>(TbGoodsType.class));
            return goodsTypeList;
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    public int addType(TbGoodsType type) {
        QueryRunner qr = new QueryRunner();
        String sql = "insert into tb_good_type values(null,?,?,?)";
        int update = 0;
        try {
             update = qr.update(DbUtils.getConn(), sql, type.getParent());
            //添加完成数据后,会有一个自增的主键,我们现在需要这个自增的主键,将返回的结果起一个别名叫id,用MapHandler进行保存
            //MapHandler的作用就是将返回的列名作为key,列的值作为value保存到map中
            Map<String,Object> map =qr.query("LAST_INSERT_ID()id",new MapHandler());
            //获取到自增的id
            Integer id = (Integer) map.get("id");
            //保存到传递过来的对象上面,在外面就可以获取到id了
            type.setId(Long.valueOf(id));
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return update;
    }
}
